package com.khotyn.heresy.validator;

import java.util.regex.Pattern;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.khotyn.heresy.bean.Admin;

/**
 * 验证管理员是否登录成功
 * 
 * @author 赵洁琼
 * 
 */
public class AdminLoginValidator implements Validator {

	/**
	 * 过滤验证器验证的类的类型
	 */
	@Override
	public boolean supports(Class clazz) {
		// TODO Auto-generated method stub
		return Admin.class.equals(clazz);
	}

	/**
	 * 过滤类中的字段, 包括邮箱的格式、输入密码的格式和长度,是否存在该管理员以及该帐户是否有管理员权限
	 */
	@Override
	public void validate(Object obj, Errors errors) {
		// TODO Auto-generated method stub
		Admin admin = (Admin) obj;
		// 验证邮件地址为空
		ValidationUtils.rejectIfEmpty(errors, "adminEmail", "adminEmail.empty",
				"邮件地址不能为空");

		// 验证密码为空
		ValidationUtils.rejectIfEmpty(errors, "adminPassword",
				"adminPassword.empty", "密码不能为空");

		// 验证密码是否为8-12位字母、数字和下划线组合
		if (!Pattern.matches("^(\\w){8,12}$", admin.getAdminPassword())) {
			errors.rejectValue("adminPassword", "adminPassword.not_fit",
					"密码不符要求（8－12位字母、数字和下划线组合）");
		}

		// 验证邮件地址是否符合规范
		if (!Pattern.matches("^[\\w][\\w\\-\\.]+@[\\w\\-]+(\\.[a-z]+){1,2}$",
				admin.getAdminEmail())) {
			errors.rejectValue("adminEmail", "adminEmail.not_standard",
					"邮件地址输入不符合规范");
		}
	}

}
